#Boa:Dialog:AdicionarRecurso

import wx
import Dialog_CadastrarNovoRecurso
from Class_GerenciadorRecursos import *
from Class_ItemRecurso import *
from Class_Recurso import *

def create(parent, TipoRecurso):
    return AdicionarRecurso(parent, TipoRecurso)

[wxID_ADICIONARRECURSO, wxID_ADICIONARRECURSOBUTTON1, 
 wxID_ADICIONARRECURSOBUTTON2, wxID_ADICIONARRECURSOBUTTON3, 
 wxID_ADICIONARRECURSOBUTTON4, wxID_ADICIONARRECURSOBUTTON5, 
 wxID_ADICIONARRECURSOLISTCTRL1, wxID_ADICIONARRECURSOSEARCHCTRL1, 
 wxID_ADICIONARRECURSOSPINCTRL1, wxID_ADICIONARRECURSOSTATICLINE1, 
 wxID_ADICIONARRECURSOSTATICLINE2, wxID_ADICIONARRECURSOSTATICLINE3, 
 wxID_ADICIONARRECURSOSTATICLINE4, wxID_ADICIONARRECURSOSTATICLINE5, 
 wxID_ADICIONARRECURSOSTATICTEXT1, wxID_ADICIONARRECURSOSTATICTEXT2, 
 wxID_ADICIONARRECURSOSTATICTEXT3, wxID_ADICIONARRECURSOSTATICTEXT4, 
 wxID_ADICIONARRECURSOSTATICTEXT5, wxID_ADICIONARRECURSOSTATICTEXT6, 
 wxID_ADICIONARRECURSOTEXTCTRL1, wxID_ADICIONARRECURSOWINDOW1, 
] = [wx.NewId() for _init_ctrls in range(22)]

class AdicionarRecurso(wx.Dialog):
    def _init_coll_listCtrl1_Columns(self, parent):
        # generated method, don't edit

        parent.InsertColumn(col=0, format=wx.LIST_FORMAT_LEFT, heading=u'Id',
              width=-1)
        parent.InsertColumn(col=1, format=wx.LIST_FORMAT_LEFT, heading=u'Nome',
              width=-1)

    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Dialog.__init__(self, id=wxID_ADICIONARRECURSO,
              name=u'AdicionarRecurso', parent=prnt, pos=wx.Point(691, 150),
              size=wx.Size(354, 554), style=wx.DEFAULT_DIALOG_STYLE,
              title='Dialog1')
        self.SetClientSize(wx.Size(346, 521))
        self.Center(wx.BOTH)

        self.window1 = wx.Window(id=wxID_ADICIONARRECURSOWINDOW1,
              name='window1', parent=self, pos=wx.Point(12, 9),
              size=wx.Size(321, 503), style=wx.TAB_TRAVERSAL)
        self.window1.Center(wx.BOTH)

        self.searchCtrl1 = wx.SearchCtrl(id=wxID_ADICIONARRECURSOSEARCHCTRL1,
              name='searchCtrl1', parent=self.window1, pos=wx.Point(40, 85),
              size=wx.Size(160, 21), style=0, value=u'')

        self.staticLine1 = wx.StaticLine(id=wxID_ADICIONARRECURSOSTATICLINE1,
              name='staticLine1', parent=self.window1, pos=wx.Point(20, 392),
              size=wx.Size(280, 2), style=0)
        self.staticLine1.Center(wx.HORIZONTAL)

        self.button1 = wx.Button(id=wxID_ADICIONARRECURSOBUTTON1,
              label=u'Pesquisar', name='button1', parent=self.window1,
              pos=wx.Point(217, 83), size=wx.Size(75, 24), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnButton1Button,
              id=wxID_ADICIONARRECURSOBUTTON1)

        self.listCtrl1 = wx.ListCtrl(id=wxID_ADICIONARRECURSOLISTCTRL1,
              name='listCtrl1', parent=self.window1, pos=wx.Point(40, 154),
              size=wx.Size(240, 100), style=wx.LC_REPORT)
        self.listCtrl1.Center(wx.HORIZONTAL)
        self._init_coll_listCtrl1_Columns(self.listCtrl1)
        self.listCtrl1.Bind(wx.EVT_LIST_ITEM_ACTIVATED,
              self.OnListCtrl1ListItemActivated,
              id=wxID_ADICIONARRECURSOLISTCTRL1)

        self.staticLine2 = wx.StaticLine(id=wxID_ADICIONARRECURSOSTATICLINE2,
              name='staticLine2', parent=self.window1, pos=wx.Point(20, 128),
              size=wx.Size(280, 2), style=0)
        self.staticLine2.Center(wx.HORIZONTAL)

        self.textCtrl1 = wx.TextCtrl(id=wxID_ADICIONARRECURSOTEXTCTRL1,
              name='textCtrl1', parent=self.window1, pos=wx.Point(56, 336),
              size=wx.Size(48, 21), style=0, value=u'0,00')

        self.staticText1 = wx.StaticText(id=wxID_ADICIONARRECURSOSTATICTEXT1,
              label=u'R$', name='staticText1', parent=self.window1,
              pos=wx.Point(24, 336), size=wx.Size(21, 18), style=0)
        self.staticText1.SetFont(wx.Font(11, wx.SWISS, wx.NORMAL, wx.BOLD,
              False, u'Tahoma'))

        self.staticText2 = wx.StaticText(id=wxID_ADICIONARRECURSOSTATICTEXT2,
              label=u'Qtd.', name='staticText2', parent=self.window1,
              pos=wx.Point(120, 336), size=wx.Size(32, 18), style=0)
        self.staticText2.SetFont(wx.Font(11, wx.SWISS, wx.NORMAL, wx.BOLD,
              False, u'Tahoma'))

        self.staticText3 = wx.StaticText(id=wxID_ADICIONARRECURSOSTATICTEXT3,
              label=u'<Nome do Recurso>', name='staticText3',
              parent=self.window1, pos=wx.Point(83, 296), size=wx.Size(154, 18),
              style=0)
        self.staticText3.SetFont(wx.Font(11, wx.SWISS, wx.NORMAL, wx.BOLD,
              False, u'Tahoma'))
        self.staticText3.Center(wx.HORIZONTAL)

        self.spinCtrl1 = wx.SpinCtrl(id=wxID_ADICIONARRECURSOSPINCTRL1,
              initial=0, max=100, min=0, name='spinCtrl1', parent=self.window1,
              pos=wx.Point(166, 336), size=wx.Size(50, 21),
              style=wx.SP_ARROW_KEYS)

        self.button5 = wx.Button(id=wxID_ADICIONARRECURSOBUTTON5,
              label=u'Calcular Total', name='button5', parent=self.window1,
              pos=wx.Point(232, 336), size=wx.Size(80, 24),
              style=wx.ALWAYS_SHOW_SB)
        self.button5.Bind(wx.EVT_BUTTON, self.OnButton5Button,
              id=wxID_ADICIONARRECURSOBUTTON5)

        self.staticLine3 = wx.StaticLine(id=wxID_ADICIONARRECURSOSTATICLINE3,
              name='staticLine3', parent=self.window1, pos=wx.Point(20, 431),
              size=wx.Size(280, 2), style=0)
        self.staticLine3.Center(wx.HORIZONTAL)

        self.staticText4 = wx.StaticText(id=wxID_ADICIONARRECURSOSTATICTEXT4,
              label=u'Total', name='staticText4', parent=self.window1,
              pos=wx.Point(109, 400), size=wx.Size(49, 23), style=0)
        self.staticText4.SetFont(wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD,
              False, u'Tahoma'))

        self.staticText5 = wx.StaticText(id=wxID_ADICIONARRECURSOSTATICTEXT5,
              label=u'R$ 0,00', name='staticText5', parent=self.window1,
              pos=wx.Point(183, 404), size=wx.Size(44, 16), style=0)
        self.staticText5.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.NORMAL,
              False, u'Tahoma'))

        self.button2 = wx.Button(id=wxID_ADICIONARRECURSOBUTTON2,
              label=u'Salvar', name='button2', parent=self.window1,
              pos=wx.Point(72, 456), size=wx.Size(75, 23), style=0)
        self.button2.Bind(wx.EVT_BUTTON, self.OnButton2Button,
              id=wxID_ADICIONARRECURSOBUTTON2)

        self.button3 = wx.Button(id=wxID_ADICIONARRECURSOBUTTON3,
              label=u'Cancelar', name='button3', parent=self.window1,
              pos=wx.Point(176, 456), size=wx.Size(75, 23), style=0)
        self.button3.Bind(wx.EVT_BUTTON, self.OnButton3Button,
              id=wxID_ADICIONARRECURSOBUTTON3)

        self.staticLine4 = wx.StaticLine(id=wxID_ADICIONARRECURSOSTATICLINE4,
              name='staticLine4', parent=self.window1, pos=wx.Point(20, 280),
              size=wx.Size(280, 2), style=0)
        self.staticLine4.Center(wx.HORIZONTAL)

        self.button4 = wx.Button(id=wxID_ADICIONARRECURSOBUTTON4,
              label=u'Cadastrar novo recurso', name='button4',
              parent=self.window1, pos=wx.Point(104, 24), size=wx.Size(131, 23),
              style=0)
        self.button4.Bind(wx.EVT_BUTTON, self.OnButton4Button,
              id=wxID_ADICIONARRECURSOBUTTON4)

        self.staticLine5 = wx.StaticLine(id=wxID_ADICIONARRECURSOSTATICLINE5,
              name='staticLine5', parent=self.window1, pos=wx.Point(20, 64),
              size=wx.Size(280, 2), style=0)
        self.staticLine5.Center(wx.HORIZONTAL)

        self.staticText6 = wx.StaticText(id=wxID_ADICIONARRECURSOSTATICTEXT6,
              label=u'(a unidade)', name='staticText6', parent=self.window1,
              pos=wx.Point(24, 360), size=wx.Size(55, 13), style=0)

    def __init__(self, parent, TipoRecurso):
        self._init_ctrls(parent)
        self.TipoRecurso = TipoRecurso
        self.RedimensionarColunas(-2)
        self.GR = GerenciadorRecursos()
        self.ListaRecursos = ['']
        rec = Recurso('','', TipoRecurso)
        self.DadosRecurso = ItemRecurso(rec, 0,0)
        
        
    #Botao: "Cadastrar novo Recurso"
    def OnButton4Button(self, event):
        self.tela = Dialog_CadastrarNovoRecurso.create(self, self.DadosRecurso.GetRecurso().GetTipo())
        self.tela.ShowModal()

    #Botao: "Pesquisar"
    def OnButton1Button(self, event):
        self.LimparLista()
        Nome = self.searchCtrl1.GetValue()
        Nome = '%'+Nome+'%'
        self.ListaRecursos = self.GR.PesquisarRecursoPorNome(Nome)
        self.PreencherEventosNaLista(self.ListaRecursos)
        
    #Coloca os dados do Recurso Selecionado no NomeDoRecurso
    #e centraliza o Nome
    def OnListCtrl1ListItemActivated(self, event):
        dados = self.PegarItemSelecionado()
        
        self.DadosRecurso.GetRecurso().SetID(dados[0])
        self.DadosRecurso.GetRecurso().SetNome(dados[1])
        
        NomeRecurso = self.DadosRecurso.GetRecurso().GetNome()
        self.staticText3.SetLabel(NomeRecurso)
        
        self.staticText3.Center(wx.HORIZONTAL)
        
        
    def PegarItemSelecionado(self):
        #Descobre qual foi o Recurso Selecionado
        LinhaSelecionada = self.listCtrl1.GetFocusedItem()
        DadosRecurso = self.ListaRecursos[LinhaSelecionada]
        return DadosRecurso

    #Botao: "Salvar"
    def OnButton2Button(self, event):
        self.OnButton5Button(None)


        self.Close()
        

    #Botao: "Cancelar"
    def OnButton3Button(self, event):
        self.Close()

    #Carrega os Todos os Eventos na lista
    def PreencherEventosNaLista(self, Lista):
        
        lista = self.listCtrl1
        #Pega os dados de da ListaEventos e joga na tabela
        for dados in Lista:
            
            index = lista.InsertStringItem(sys.maxint,'0')
            lista.SetStringItem(index, 0, str(dados[0]))
            lista.SetStringItem(index, 1, str(dados[1]))

        self.RedimensionarColunas(-2)
        
    #Redimensionar o Tamanho das Colunas da tabela
    def RedimensionarColunas(self, num):
        self.listCtrl1.SetColumnWidth(0, num)
        self.listCtrl1.SetColumnWidth(1, num)
    
    #Limpar os itens da tabela e da lista de Recursos
    def LimparLista(self):
    
        self.listCtrl1.DeleteAllItems()
        self.ListaRecursos = ['']
    
    #Botao: "Calcular Total"
    def OnButton5Button(self, event):
        #Acrescenta todos os Dados do Recurso selecionado a
        #Objeto self.DadosRecurso (ItemRecurso)

        Valor = self.textCtrl1.GetValue()
        Valor = Valor.replace(',','.')
        Valor = float(Valor)
        Qtd = self.spinCtrl1.GetValue()
        
        self.DadosRecurso.SetQuantidade(Qtd)
        self.DadosRecurso.SetPreco(Valor)
        self.DadosRecurso.CalcularTotal()
        
        Total = str(self.DadosRecurso.GetTotal())
        Total = Total.replace('.',',')
        
        self.staticText5.SetLabel(('R$ %s')%(Total))
        
        


        
